/*
13.4
假定Point是一个类类型，它有一个public的拷贝构造函数，
指出下面程序片段中哪些地方使用了拷贝构造函数：
Point global;
Point foo_bar(Point arg){
  Point local = arg; 
  Point *heap = new Point(global); 
  *heap = local;
  Point pa[4] = {local, *heap};
  return *heap;
}
*/

Point global;
Point foo_bar(Point arg){			//1. 将一个对象作为实参传递给一个非引用类型的形参
  Point local = arg; 				//2. 拷贝初始化一个类类型
  Point *heap = new Point(global); 	//3. 为类类型对象分配内存地址，用到了拷贝构造函数
  *heap = local;					//只用到了拷贝赋值运算符
  Point pa[4] = {local, *heap};		//4&5. 列表初始化一个数组
  return *heap;						//6. 指针算是非引用类型，
  									//所以调用拷贝构造函数来拷贝*heap内存地址中的Point类类型对象
}